package pro.shushi.pamirs.hr.core.init;

import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;
import pro.shushi.pamirs.boot.common.api.command.AppLifecycleCommand;
import pro.shushi.pamirs.boot.common.extend.MetaDataEditor;
import pro.shushi.pamirs.core.common.InitializationUtil;
import pro.shushi.pamirs.hr.api.HrSimpleModule;
import pro.shushi.pamirs.meta.annotation.fun.extern.Slf4j;
import pro.shushi.pamirs.meta.api.dto.meta.Meta;
import pro.shushi.pamirs.metadata.manager.core.helper.DesignerInstallHelper;

import java.util.List;
import java.util.Map;

/**
 * 安装设计器导出的元数据
 */
@Slf4j
@Component
public class HrSimpleModuleInstall implements MetaDataEditor {

    private static final String INSTALL_META_PATH = "";
//    private static final String INSTALL_META_PATH = "install/meta.json";
//    private static final String INSTALL_WIDGET_ZIP_PATH = "install/widget.zip";
//    private static final String INSTALL_WIDGET_JSON_PATH = "install/widget.json";

    @Autowired
    private ApplicationContext applicationContext;

    @Override
    public void edit(AppLifecycleCommand command, Map<String, Meta> metaMap) {
        if (!doImport()) {
            return;
        }

        if(StringUtils.isBlank(INSTALL_META_PATH)) return;

        log.info("开始安装HrSimple应用-元数据");
        try {
            log.info("开始安装HrSimple应用界面设计元数据");
            InitializationUtil util = InitializationUtil.get(metaMap, HrSimpleModule.MODULE_MODULE, HrSimpleModule.MODULE_NAME);
            if (null != util) {
                // 设计器的元数据
                DesignerInstallHelper.mateInitialization(util, INSTALL_META_PATH, HrSimpleModule.MODULE_MODULE,
                        HrSimpleModule.MODULE_NAME);
            }
        } catch (Exception e) {
            log.error("初始化界面设计器导入异常", e);
        }

        log.info("完成安装HrSimple应用-元数据");
    }

    /**
     * *************************************************************
     * 【重要提示】开发环境不要执行安装，否则会把设计的页面变更成系统的页面从而导致在设计器中不能进行修改，请注意修改！！     *
     * 【重要提示】开发环境不要执行安装，否则会把设计的页面变更成系统的页面从而导致在设计器中不能进行修改，请注意修改！！     *
     * 【重要提示】开发环境不要执行安装，否则会把设计的页面变更成系统的页面从而导致在设计器中不能进行修改，请注意修改！！     *
     * *************************************************************
     */
    private boolean doImport() {
        // ⾃定义导⼊判断. 避免⽤于设计的开发环境执⾏导⼊逻辑
        String[] envs = applicationContext.getEnvironment().getActiveProfiles();
        List<String> envList = Lists.newArrayList(envs);
        // 请过滤掉开发环境
        return CollectionUtils.isNotEmpty(envList)
                && ((envList.contains("test") || envList.contains("prod")));
    }

}
